// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*!
 * @file TypeLookupTypesPubSubTypes.cpp
 * This header file contains the implementation of the serialization functions.
 *
 * This file was generated by the tool fastddsgen.
 */

#include "TypeLookupTypesPubSubTypes.h"

#include <fastdds/dds/log/Log.hpp>
#include <fastdds/rtps/common/CdrSerialization.hpp>

#include "TypeLookupTypesCdrAux.hpp"
using SerializedPayload_t = eprosima::fastrtps::rtps::SerializedPayload_t;
using InstanceHandle_t = eprosima::fastrtps::rtps::InstanceHandle_t;
using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t;

namespace eprosima {

namespace fastdds {

namespace dds {


namespace builtin {
    TypeLookup_getTypes_InPubSubType::TypeLookup_getTypes_InPubSubType()
    {
        setName("eprosima::fastdds::dds::builtin::TypeLookup_getTypes_In");
        uint32_t type_size =
    #if FASTCDR_VERSION_MAJOR == 1
            static_cast<uint32_t>(TypeLookup_getTypes_In::getMaxCdrSerializedSize());
    #else
            eprosima_fastdds_dds_builtin_TypeLookup_getTypes_In_max_cdr_typesize;
    #endif
        type_size += static_cast<uint32_t>(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */
        m_typeSize = type_size + 4; /*encapsulation*/
        m_isGetKeyDefined = false;
        uint32_t keyLength = eprosima_fastdds_dds_builtin_TypeLookup_getTypes_In_max_key_cdr_typesize > 16 ? eprosima_fastdds_dds_builtin_TypeLookup_getTypes_In_max_key_cdr_typesize : 16;
        m_keyBuffer = reinterpret_cast<unsigned char*>(malloc(keyLength));
        memset(m_keyBuffer, 0, keyLength);
    }

    TypeLookup_getTypes_InPubSubType::~TypeLookup_getTypes_InPubSubType()
    {
        if (m_keyBuffer != nullptr)
        {
            free(m_keyBuffer);
        }
    }

    bool TypeLookup_getTypes_InPubSubType::serialize(
            void* data,
            SerializedPayload_t* payload,
            DataRepresentationId_t data_representation)
    {
        TypeLookup_getTypes_In* p_type = static_cast<TypeLookup_getTypes_In*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->max_size);
        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
                data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2);
        payload->encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;
    #if FASTCDR_VERSION_MAJOR > 1
        ser.set_encoding_flag(
            data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR :
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR2);
    #endif // FASTCDR_VERSION_MAJOR > 1

        try
        {
            // Serialize encapsulation
            ser.serialize_encapsulation();
            // Serialize the object.
            ser << *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        // Get the serialized length
    #if FASTCDR_VERSION_MAJOR == 1
        payload->length = static_cast<uint32_t>(ser.getSerializedDataLength());
    #else
        payload->length = static_cast<uint32_t>(ser.get_serialized_data_length());
    #endif // FASTCDR_VERSION_MAJOR == 1
        return true;
    }

    bool TypeLookup_getTypes_InPubSubType::deserialize(
            SerializedPayload_t* payload,
            void* data)
    {
        try
        {
            // Convert DATA to pointer of your type
            TypeLookup_getTypes_In* p_type = static_cast<TypeLookup_getTypes_In*>(data);

            // Object that manages the raw buffer.
            eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->length);

            // Object that deserializes the data.
            eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN
    #if FASTCDR_VERSION_MAJOR == 1
                    , eprosima::fastcdr::Cdr::CdrType::DDS_CDR
    #endif // FASTCDR_VERSION_MAJOR == 1
                    );

            // Deserialize encapsulation.
            deser.read_encapsulation();
            payload->encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

            // Deserialize the object.
            deser >> *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        return true;
    }

    std::function<uint32_t()> TypeLookup_getTypes_InPubSubType::getSerializedSizeProvider(
            void* data,
            DataRepresentationId_t data_representation)
    {
        return [data, data_representation]() -> uint32_t
               {
    #if FASTCDR_VERSION_MAJOR == 1
                   static_cast<void>(data_representation);
                   return static_cast<uint32_t>(type::getCdrSerializedSize(*static_cast<TypeLookup_getTypes_In*>(data))) +
                          4u /*encapsulation*/;
    #else
                   try
                   {
                       eprosima::fastcdr::CdrSizeCalculator calculator(
                           data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                           eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2);
                       size_t current_alignment {0};
                       return static_cast<uint32_t>(calculator.calculate_serialized_size(
                                   *static_cast<TypeLookup_getTypes_In*>(data), current_alignment)) +
                               4u /*encapsulation*/;
                   }
                   catch (eprosima::fastcdr::exception::Exception& /*exception*/)
                   {
                       return 0;
                   }
    #endif // FASTCDR_VERSION_MAJOR == 1
               };
    }

    void* TypeLookup_getTypes_InPubSubType::createData()
    {
        return reinterpret_cast<void*>(new TypeLookup_getTypes_In());
    }

    void TypeLookup_getTypes_InPubSubType::deleteData(
            void* data)
    {
        delete(reinterpret_cast<TypeLookup_getTypes_In*>(data));
    }

    bool TypeLookup_getTypes_InPubSubType::getKey(
            void* data,
            InstanceHandle_t* handle,
            bool force_md5)
    {
        if (!m_isGetKeyDefined)
        {
            return false;
        }

        TypeLookup_getTypes_In* p_type = static_cast<TypeLookup_getTypes_In*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(m_keyBuffer),
                eprosima_fastdds_dds_builtin_TypeLookup_getTypes_In_max_key_cdr_typesize);

        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv1);
    #if FASTCDR_VERSION_MAJOR == 1
        p_type->serializeKey(ser);
    #else
        eprosima::fastcdr::serialize_key(ser, *p_type);
    #endif // FASTCDR_VERSION_MAJOR == 1
        if (force_md5 || eprosima_fastdds_dds_builtin_TypeLookup_getTypes_In_max_key_cdr_typesize > 16)
        {
            m_md5.init();
    #if FASTCDR_VERSION_MAJOR == 1
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.getSerializedDataLength()));
    #else
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.get_serialized_data_length()));
    #endif // FASTCDR_VERSION_MAJOR == 1
            m_md5.finalize();
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_md5.digest[i];
            }
        }
        else
        {
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_keyBuffer[i];
            }
        }
        return true;
    }

    void TypeLookup_getTypes_InPubSubType::register_type_object_representation()
    {
        EPROSIMA_LOG_WARNING(XTYPES_TYPE_REPRESENTATION,
            "TypeObject type representation support disabled in generated code");
    }

    TypeLookup_getTypes_OutPubSubType::TypeLookup_getTypes_OutPubSubType()
    {
        setName("eprosima::fastdds::dds::builtin::TypeLookup_getTypes_Out");
        uint32_t type_size =
    #if FASTCDR_VERSION_MAJOR == 1
            static_cast<uint32_t>(TypeLookup_getTypes_Out::getMaxCdrSerializedSize());
    #else
            eprosima_fastdds_dds_builtin_TypeLookup_getTypes_Out_max_cdr_typesize;
    #endif
        type_size += static_cast<uint32_t>(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */
        m_typeSize = type_size + 4; /*encapsulation*/
        m_isGetKeyDefined = false;
        uint32_t keyLength = eprosima_fastdds_dds_builtin_TypeLookup_getTypes_Out_max_key_cdr_typesize > 16 ? eprosima_fastdds_dds_builtin_TypeLookup_getTypes_Out_max_key_cdr_typesize : 16;
        m_keyBuffer = reinterpret_cast<unsigned char*>(malloc(keyLength));
        memset(m_keyBuffer, 0, keyLength);
    }

    TypeLookup_getTypes_OutPubSubType::~TypeLookup_getTypes_OutPubSubType()
    {
        if (m_keyBuffer != nullptr)
        {
            free(m_keyBuffer);
        }
    }

    bool TypeLookup_getTypes_OutPubSubType::serialize(
            void* data,
            SerializedPayload_t* payload,
            DataRepresentationId_t data_representation)
    {
        TypeLookup_getTypes_Out* p_type = static_cast<TypeLookup_getTypes_Out*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->max_size);
        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
                data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2);
        payload->encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;
    #if FASTCDR_VERSION_MAJOR > 1
        ser.set_encoding_flag(
            data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR :
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR2);
    #endif // FASTCDR_VERSION_MAJOR > 1

        try
        {
            // Serialize encapsulation
            ser.serialize_encapsulation();
            // Serialize the object.
            ser << *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        // Get the serialized length
    #if FASTCDR_VERSION_MAJOR == 1
        payload->length = static_cast<uint32_t>(ser.getSerializedDataLength());
    #else
        payload->length = static_cast<uint32_t>(ser.get_serialized_data_length());
    #endif // FASTCDR_VERSION_MAJOR == 1
        return true;
    }

    bool TypeLookup_getTypes_OutPubSubType::deserialize(
            SerializedPayload_t* payload,
            void* data)
    {
        try
        {
            // Convert DATA to pointer of your type
            TypeLookup_getTypes_Out* p_type = static_cast<TypeLookup_getTypes_Out*>(data);

            // Object that manages the raw buffer.
            eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->length);

            // Object that deserializes the data.
            eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN
    #if FASTCDR_VERSION_MAJOR == 1
                    , eprosima::fastcdr::Cdr::CdrType::DDS_CDR
    #endif // FASTCDR_VERSION_MAJOR == 1
                    );

            // Deserialize encapsulation.
            deser.read_encapsulation();
            payload->encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

            // Deserialize the object.
            deser >> *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        return true;
    }

    std::function<uint32_t()> TypeLookup_getTypes_OutPubSubType::getSerializedSizeProvider(
            void* data,
            DataRepresentationId_t data_representation)
    {
        return [data, data_representation]() -> uint32_t
               {
    #if FASTCDR_VERSION_MAJOR == 1
                   static_cast<void>(data_representation);
                   return static_cast<uint32_t>(type::getCdrSerializedSize(*static_cast<TypeLookup_getTypes_Out*>(data))) +
                          4u /*encapsulation*/;
    #else
                   try
                   {
                       eprosima::fastcdr::CdrSizeCalculator calculator(
                           data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                           eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2);
                       size_t current_alignment {0};
                       return static_cast<uint32_t>(calculator.calculate_serialized_size(
                                   *static_cast<TypeLookup_getTypes_Out*>(data), current_alignment)) +
                               4u /*encapsulation*/;
                   }
                   catch (eprosima::fastcdr::exception::Exception& /*exception*/)
                   {
                       return 0;
                   }
    #endif // FASTCDR_VERSION_MAJOR == 1
               };
    }

    void* TypeLookup_getTypes_OutPubSubType::createData()
    {
        return reinterpret_cast<void*>(new TypeLookup_getTypes_Out());
    }

    void TypeLookup_getTypes_OutPubSubType::deleteData(
            void* data)
    {
        delete(reinterpret_cast<TypeLookup_getTypes_Out*>(data));
    }

    bool TypeLookup_getTypes_OutPubSubType::getKey(
            void* data,
            InstanceHandle_t* handle,
            bool force_md5)
    {
        if (!m_isGetKeyDefined)
        {
            return false;
        }

        TypeLookup_getTypes_Out* p_type = static_cast<TypeLookup_getTypes_Out*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(m_keyBuffer),
                eprosima_fastdds_dds_builtin_TypeLookup_getTypes_Out_max_key_cdr_typesize);

        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv1);
    #if FASTCDR_VERSION_MAJOR == 1
        p_type->serializeKey(ser);
    #else
        eprosima::fastcdr::serialize_key(ser, *p_type);
    #endif // FASTCDR_VERSION_MAJOR == 1
        if (force_md5 || eprosima_fastdds_dds_builtin_TypeLookup_getTypes_Out_max_key_cdr_typesize > 16)
        {
            m_md5.init();
    #if FASTCDR_VERSION_MAJOR == 1
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.getSerializedDataLength()));
    #else
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.get_serialized_data_length()));
    #endif // FASTCDR_VERSION_MAJOR == 1
            m_md5.finalize();
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_md5.digest[i];
            }
        }
        else
        {
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_keyBuffer[i];
            }
        }
        return true;
    }

    void TypeLookup_getTypes_OutPubSubType::register_type_object_representation()
    {
        EPROSIMA_LOG_WARNING(XTYPES_TYPE_REPRESENTATION,
            "TypeObject type representation support disabled in generated code");
    }


    TypeLookup_getTypeDependencies_InPubSubType::TypeLookup_getTypeDependencies_InPubSubType()
    {
        setName("eprosima::fastdds::dds::builtin::TypeLookup_getTypeDependencies_In");
        uint32_t type_size =
    #if FASTCDR_VERSION_MAJOR == 1
            static_cast<uint32_t>(TypeLookup_getTypeDependencies_In::getMaxCdrSerializedSize());
    #else
            eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_In_max_cdr_typesize;
    #endif
        type_size += static_cast<uint32_t>(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */
        m_typeSize = type_size + 4; /*encapsulation*/
        m_isGetKeyDefined = false;
        uint32_t keyLength = eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_In_max_key_cdr_typesize > 16 ? eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_In_max_key_cdr_typesize : 16;
        m_keyBuffer = reinterpret_cast<unsigned char*>(malloc(keyLength));
        memset(m_keyBuffer, 0, keyLength);
    }

    TypeLookup_getTypeDependencies_InPubSubType::~TypeLookup_getTypeDependencies_InPubSubType()
    {
        if (m_keyBuffer != nullptr)
        {
            free(m_keyBuffer);
        }
    }

    bool TypeLookup_getTypeDependencies_InPubSubType::serialize(
            void* data,
            SerializedPayload_t* payload,
            DataRepresentationId_t data_representation)
    {
        TypeLookup_getTypeDependencies_In* p_type = static_cast<TypeLookup_getTypeDependencies_In*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->max_size);
        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
                data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2);
        payload->encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;
    #if FASTCDR_VERSION_MAJOR > 1
        ser.set_encoding_flag(
            data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR :
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR2);
    #endif // FASTCDR_VERSION_MAJOR > 1

        try
        {
            // Serialize encapsulation
            ser.serialize_encapsulation();
            // Serialize the object.
            ser << *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        // Get the serialized length
    #if FASTCDR_VERSION_MAJOR == 1
        payload->length = static_cast<uint32_t>(ser.getSerializedDataLength());
    #else
        payload->length = static_cast<uint32_t>(ser.get_serialized_data_length());
    #endif // FASTCDR_VERSION_MAJOR == 1
        return true;
    }

    bool TypeLookup_getTypeDependencies_InPubSubType::deserialize(
            SerializedPayload_t* payload,
            void* data)
    {
        try
        {
            // Convert DATA to pointer of your type
            TypeLookup_getTypeDependencies_In* p_type = static_cast<TypeLookup_getTypeDependencies_In*>(data);

            // Object that manages the raw buffer.
            eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->length);

            // Object that deserializes the data.
            eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN
    #if FASTCDR_VERSION_MAJOR == 1
                    , eprosima::fastcdr::Cdr::CdrType::DDS_CDR
    #endif // FASTCDR_VERSION_MAJOR == 1
                    );

            // Deserialize encapsulation.
            deser.read_encapsulation();
            payload->encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

            // Deserialize the object.
            deser >> *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        return true;
    }

    std::function<uint32_t()> TypeLookup_getTypeDependencies_InPubSubType::getSerializedSizeProvider(
            void* data,
            DataRepresentationId_t data_representation)
    {
        return [data, data_representation]() -> uint32_t
               {
    #if FASTCDR_VERSION_MAJOR == 1
                   static_cast<void>(data_representation);
                   return static_cast<uint32_t>(type::getCdrSerializedSize(*static_cast<TypeLookup_getTypeDependencies_In*>(data))) +
                          4u /*encapsulation*/;
    #else
                   try
                   {
                       eprosima::fastcdr::CdrSizeCalculator calculator(
                           data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                           eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2);
                       size_t current_alignment {0};
                       return static_cast<uint32_t>(calculator.calculate_serialized_size(
                                   *static_cast<TypeLookup_getTypeDependencies_In*>(data), current_alignment)) +
                               4u /*encapsulation*/;
                   }
                   catch (eprosima::fastcdr::exception::Exception& /*exception*/)
                   {
                       return 0;
                   }
    #endif // FASTCDR_VERSION_MAJOR == 1
               };
    }

    void* TypeLookup_getTypeDependencies_InPubSubType::createData()
    {
        return reinterpret_cast<void*>(new TypeLookup_getTypeDependencies_In());
    }

    void TypeLookup_getTypeDependencies_InPubSubType::deleteData(
            void* data)
    {
        delete(reinterpret_cast<TypeLookup_getTypeDependencies_In*>(data));
    }

    bool TypeLookup_getTypeDependencies_InPubSubType::getKey(
            void* data,
            InstanceHandle_t* handle,
            bool force_md5)
    {
        if (!m_isGetKeyDefined)
        {
            return false;
        }

        TypeLookup_getTypeDependencies_In* p_type = static_cast<TypeLookup_getTypeDependencies_In*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(m_keyBuffer),
                eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_In_max_key_cdr_typesize);

        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv1);
    #if FASTCDR_VERSION_MAJOR == 1
        p_type->serializeKey(ser);
    #else
        eprosima::fastcdr::serialize_key(ser, *p_type);
    #endif // FASTCDR_VERSION_MAJOR == 1
        if (force_md5 || eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_In_max_key_cdr_typesize > 16)
        {
            m_md5.init();
    #if FASTCDR_VERSION_MAJOR == 1
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.getSerializedDataLength()));
    #else
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.get_serialized_data_length()));
    #endif // FASTCDR_VERSION_MAJOR == 1
            m_md5.finalize();
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_md5.digest[i];
            }
        }
        else
        {
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_keyBuffer[i];
            }
        }
        return true;
    }

    void TypeLookup_getTypeDependencies_InPubSubType::register_type_object_representation()
    {
        EPROSIMA_LOG_WARNING(XTYPES_TYPE_REPRESENTATION,
            "TypeObject type representation support disabled in generated code");
    }

    TypeLookup_getTypeDependencies_OutPubSubType::TypeLookup_getTypeDependencies_OutPubSubType()
    {
        setName("eprosima::fastdds::dds::builtin::TypeLookup_getTypeDependencies_Out");
        uint32_t type_size =
    #if FASTCDR_VERSION_MAJOR == 1
            static_cast<uint32_t>(TypeLookup_getTypeDependencies_Out::getMaxCdrSerializedSize());
    #else
            eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_Out_max_cdr_typesize;
    #endif
        type_size += static_cast<uint32_t>(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */
        m_typeSize = type_size + 4; /*encapsulation*/
        m_isGetKeyDefined = false;
        uint32_t keyLength = eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_Out_max_key_cdr_typesize > 16 ? eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_Out_max_key_cdr_typesize : 16;
        m_keyBuffer = reinterpret_cast<unsigned char*>(malloc(keyLength));
        memset(m_keyBuffer, 0, keyLength);
    }

    TypeLookup_getTypeDependencies_OutPubSubType::~TypeLookup_getTypeDependencies_OutPubSubType()
    {
        if (m_keyBuffer != nullptr)
        {
            free(m_keyBuffer);
        }
    }

    bool TypeLookup_getTypeDependencies_OutPubSubType::serialize(
            void* data,
            SerializedPayload_t* payload,
            DataRepresentationId_t data_representation)
    {
        TypeLookup_getTypeDependencies_Out* p_type = static_cast<TypeLookup_getTypeDependencies_Out*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->max_size);
        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
                data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2);
        payload->encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;
    #if FASTCDR_VERSION_MAJOR > 1
        ser.set_encoding_flag(
            data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR :
            eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR2);
    #endif // FASTCDR_VERSION_MAJOR > 1

        try
        {
            // Serialize encapsulation
            ser.serialize_encapsulation();
            // Serialize the object.
            ser << *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        // Get the serialized length
    #if FASTCDR_VERSION_MAJOR == 1
        payload->length = static_cast<uint32_t>(ser.getSerializedDataLength());
    #else
        payload->length = static_cast<uint32_t>(ser.get_serialized_data_length());
    #endif // FASTCDR_VERSION_MAJOR == 1
        return true;
    }

    bool TypeLookup_getTypeDependencies_OutPubSubType::deserialize(
            SerializedPayload_t* payload,
            void* data)
    {
        try
        {
            // Convert DATA to pointer of your type
            TypeLookup_getTypeDependencies_Out* p_type = static_cast<TypeLookup_getTypeDependencies_Out*>(data);

            // Object that manages the raw buffer.
            eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->length);

            // Object that deserializes the data.
            eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN
    #if FASTCDR_VERSION_MAJOR == 1
                    , eprosima::fastcdr::Cdr::CdrType::DDS_CDR
    #endif // FASTCDR_VERSION_MAJOR == 1
                    );

            // Deserialize encapsulation.
            deser.read_encapsulation();
            payload->encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

            // Deserialize the object.
            deser >> *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        return true;
    }

    std::function<uint32_t()> TypeLookup_getTypeDependencies_OutPubSubType::getSerializedSizeProvider(
            void* data,
            DataRepresentationId_t data_representation)
    {
        return [data, data_representation]() -> uint32_t
               {
    #if FASTCDR_VERSION_MAJOR == 1
                   static_cast<void>(data_representation);
                   return static_cast<uint32_t>(type::getCdrSerializedSize(*static_cast<TypeLookup_getTypeDependencies_Out*>(data))) +
                          4u /*encapsulation*/;
    #else
                   try
                   {
                       eprosima::fastcdr::CdrSizeCalculator calculator(
                           data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                           eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2);
                       size_t current_alignment {0};
                       return static_cast<uint32_t>(calculator.calculate_serialized_size(
                                   *static_cast<TypeLookup_getTypeDependencies_Out*>(data), current_alignment)) +
                               4u /*encapsulation*/;
                   }
                   catch (eprosima::fastcdr::exception::Exception& /*exception*/)
                   {
                       return 0;
                   }
    #endif // FASTCDR_VERSION_MAJOR == 1
               };
    }

    void* TypeLookup_getTypeDependencies_OutPubSubType::createData()
    {
        return reinterpret_cast<void*>(new TypeLookup_getTypeDependencies_Out());
    }

    void TypeLookup_getTypeDependencies_OutPubSubType::deleteData(
            void* data)
    {
        delete(reinterpret_cast<TypeLookup_getTypeDependencies_Out*>(data));
    }

    bool TypeLookup_getTypeDependencies_OutPubSubType::getKey(
            void* data,
            InstanceHandle_t* handle,
            bool force_md5)
    {
        if (!m_isGetKeyDefined)
        {
            return false;
        }

        TypeLookup_getTypeDependencies_Out* p_type = static_cast<TypeLookup_getTypeDependencies_Out*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(m_keyBuffer),
                eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_Out_max_key_cdr_typesize);

        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv1);
    #if FASTCDR_VERSION_MAJOR == 1
        p_type->serializeKey(ser);
    #else
        eprosima::fastcdr::serialize_key(ser, *p_type);
    #endif // FASTCDR_VERSION_MAJOR == 1
        if (force_md5 || eprosima_fastdds_dds_builtin_TypeLookup_getTypeDependencies_Out_max_key_cdr_typesize > 16)
        {
            m_md5.init();
    #if FASTCDR_VERSION_MAJOR == 1
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.getSerializedDataLength()));
    #else
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.get_serialized_data_length()));
    #endif // FASTCDR_VERSION_MAJOR == 1
            m_md5.finalize();
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_md5.digest[i];
            }
        }
        else
        {
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_keyBuffer[i];
            }
        }
        return true;
    }

    void TypeLookup_getTypeDependencies_OutPubSubType::register_type_object_representation()
    {
        EPROSIMA_LOG_WARNING(XTYPES_TYPE_REPRESENTATION,
            "TypeObject type representation support disabled in generated code");
    }



    TypeLookup_RequestPubSubType::TypeLookup_RequestPubSubType()
    {
        setName("eprosima::fastdds::dds::builtin::TypeLookup_Request");
        uint32_t type_size =
    #if FASTCDR_VERSION_MAJOR == 1
            static_cast<uint32_t>(TypeLookup_Request::getMaxCdrSerializedSize());
    #else
            eprosima_fastdds_dds_builtin_TypeLookup_Request_max_cdr_typesize;
    #endif
        type_size += static_cast<uint32_t>(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */
        m_typeSize = type_size + 4; /*encapsulation*/
        m_isGetKeyDefined = false;
        uint32_t keyLength = eprosima_fastdds_dds_builtin_TypeLookup_Request_max_key_cdr_typesize > 16 ? eprosima_fastdds_dds_builtin_TypeLookup_Request_max_key_cdr_typesize : 16;
        m_keyBuffer = reinterpret_cast<unsigned char*>(malloc(keyLength));
        memset(m_keyBuffer, 0, keyLength);
    }

    TypeLookup_RequestPubSubType::~TypeLookup_RequestPubSubType()
    {
        if (m_keyBuffer != nullptr)
        {
            free(m_keyBuffer);
        }
    }

    bool TypeLookup_RequestPubSubType::serialize(
            void* data,
            SerializedPayload_t* payload,
            DataRepresentationId_t data_representation)
    {
        TypeLookup_Request* p_type = static_cast<TypeLookup_Request*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->max_size);
        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
                data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2);
        payload->encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;
    #if FASTCDR_VERSION_MAJOR > 1
        ser.set_encoding_flag(
            data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
            eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR  :
            eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2);
    #endif // FASTCDR_VERSION_MAJOR > 1

        try
        {
            // Serialize encapsulation
            ser.serialize_encapsulation();
            // Serialize the object.
            ser << *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        // Get the serialized length
    #if FASTCDR_VERSION_MAJOR == 1
        payload->length = static_cast<uint32_t>(ser.getSerializedDataLength());
    #else
        payload->length = static_cast<uint32_t>(ser.get_serialized_data_length());
    #endif // FASTCDR_VERSION_MAJOR == 1
        return true;
    }

    bool TypeLookup_RequestPubSubType::deserialize(
            SerializedPayload_t* payload,
            void* data)
    {
        try
        {
            // Convert DATA to pointer of your type
            TypeLookup_Request* p_type = static_cast<TypeLookup_Request*>(data);

            // Object that manages the raw buffer.
            eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->length);

            // Object that deserializes the data.
            eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN
    #if FASTCDR_VERSION_MAJOR == 1
                    , eprosima::fastcdr::Cdr::CdrType::DDS_CDR
    #endif // FASTCDR_VERSION_MAJOR == 1
                    );

            // Deserialize encapsulation.
            deser.read_encapsulation();
            payload->encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

            // Deserialize the object.
            deser >> *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        return true;
    }

    std::function<uint32_t()> TypeLookup_RequestPubSubType::getSerializedSizeProvider(
            void* data,
            DataRepresentationId_t data_representation)
    {
        return [data, data_representation]() -> uint32_t
               {
    #if FASTCDR_VERSION_MAJOR == 1
                   static_cast<void>(data_representation);
                   return static_cast<uint32_t>(type::getCdrSerializedSize(*static_cast<TypeLookup_Request*>(data))) +
                          4u /*encapsulation*/;
    #else
                   try
                   {
                       eprosima::fastcdr::CdrSizeCalculator calculator(
                           data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                           eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2);
                       size_t current_alignment {0};
                       return static_cast<uint32_t>(calculator.calculate_serialized_size(
                                   *static_cast<TypeLookup_Request*>(data), current_alignment)) +
                               4u /*encapsulation*/;
                   }
                   catch (eprosima::fastcdr::exception::Exception& /*exception*/)
                   {
                       return 0;
                   }
    #endif // FASTCDR_VERSION_MAJOR == 1
               };
    }

    void* TypeLookup_RequestPubSubType::createData()
    {
        return reinterpret_cast<void*>(new TypeLookup_Request());
    }

    void TypeLookup_RequestPubSubType::deleteData(
            void* data)
    {
        delete(reinterpret_cast<TypeLookup_Request*>(data));
    }

    bool TypeLookup_RequestPubSubType::getKey(
            void* data,
            InstanceHandle_t* handle,
            bool force_md5)
    {
        if (!m_isGetKeyDefined)
        {
            return false;
        }

        TypeLookup_Request* p_type = static_cast<TypeLookup_Request*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(m_keyBuffer),
                eprosima_fastdds_dds_builtin_TypeLookup_Request_max_key_cdr_typesize);

        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv1);
    #if FASTCDR_VERSION_MAJOR == 1
        p_type->serializeKey(ser);
    #else
        eprosima::fastcdr::serialize_key(ser, *p_type);
    #endif // FASTCDR_VERSION_MAJOR == 1
        if (force_md5 || eprosima_fastdds_dds_builtin_TypeLookup_Request_max_key_cdr_typesize > 16)
        {
            m_md5.init();
    #if FASTCDR_VERSION_MAJOR == 1
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.getSerializedDataLength()));
    #else
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.get_serialized_data_length()));
    #endif // FASTCDR_VERSION_MAJOR == 1
            m_md5.finalize();
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_md5.digest[i];
            }
        }
        else
        {
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_keyBuffer[i];
            }
        }
        return true;
    }

    void TypeLookup_RequestPubSubType::register_type_object_representation()
    {
        EPROSIMA_LOG_WARNING(XTYPES_TYPE_REPRESENTATION,
            "TypeObject type representation support disabled in generated code");
    }


    TypeLookup_ReplyPubSubType::TypeLookup_ReplyPubSubType()
    {
        setName("eprosima::fastdds::dds::builtin::TypeLookup_Reply");
        uint32_t type_size =
    #if FASTCDR_VERSION_MAJOR == 1
            static_cast<uint32_t>(TypeLookup_Reply::getMaxCdrSerializedSize());
    #else
            eprosima_fastdds_dds_builtin_TypeLookup_Reply_max_cdr_typesize;
    #endif
        type_size += static_cast<uint32_t>(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */
        m_typeSize = type_size + 4; /*encapsulation*/
        m_isGetKeyDefined = false;
        uint32_t keyLength = eprosima_fastdds_dds_builtin_TypeLookup_Reply_max_key_cdr_typesize > 16 ? eprosima_fastdds_dds_builtin_TypeLookup_Reply_max_key_cdr_typesize : 16;
        m_keyBuffer = reinterpret_cast<unsigned char*>(malloc(keyLength));
        memset(m_keyBuffer, 0, keyLength);
    }

    TypeLookup_ReplyPubSubType::~TypeLookup_ReplyPubSubType()
    {
        if (m_keyBuffer != nullptr)
        {
            free(m_keyBuffer);
        }
    }

    bool TypeLookup_ReplyPubSubType::serialize(
            void* data,
            SerializedPayload_t* payload,
            DataRepresentationId_t data_representation)
    {
        TypeLookup_Reply* p_type = static_cast<TypeLookup_Reply*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->max_size);
        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
                data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2);
        payload->encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;
    #if FASTCDR_VERSION_MAJOR > 1
        ser.set_encoding_flag(
            data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
            eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR  :
            eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2);
    #endif // FASTCDR_VERSION_MAJOR > 1

        try
        {
            // Serialize encapsulation
            ser.serialize_encapsulation();
            // Serialize the object.
            ser << *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        // Get the serialized length
    #if FASTCDR_VERSION_MAJOR == 1
        payload->length = static_cast<uint32_t>(ser.getSerializedDataLength());
    #else
        payload->length = static_cast<uint32_t>(ser.get_serialized_data_length());
    #endif // FASTCDR_VERSION_MAJOR == 1
        return true;
    }

    bool TypeLookup_ReplyPubSubType::deserialize(
            SerializedPayload_t* payload,
            void* data)
    {
        try
        {
            // Convert DATA to pointer of your type
            TypeLookup_Reply* p_type = static_cast<TypeLookup_Reply*>(data);

            // Object that manages the raw buffer.
            eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(payload->data), payload->length);

            // Object that deserializes the data.
            eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN
    #if FASTCDR_VERSION_MAJOR == 1
                    , eprosima::fastcdr::Cdr::CdrType::DDS_CDR
    #endif // FASTCDR_VERSION_MAJOR == 1
                    );

            // Deserialize encapsulation.
            deser.read_encapsulation();
            payload->encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

            // Deserialize the object.
            deser >> *p_type;
        }
        catch (eprosima::fastcdr::exception::Exception& /*exception*/)
        {
            return false;
        }

        return true;
    }

    std::function<uint32_t()> TypeLookup_ReplyPubSubType::getSerializedSizeProvider(
            void* data,
            DataRepresentationId_t data_representation)
    {
        return [data, data_representation]() -> uint32_t
               {
    #if FASTCDR_VERSION_MAJOR == 1
                   static_cast<void>(data_representation);
                   return static_cast<uint32_t>(type::getCdrSerializedSize(*static_cast<TypeLookup_Reply*>(data))) +
                          4u /*encapsulation*/;
    #else
                   try
                   {
                       eprosima::fastcdr::CdrSizeCalculator calculator(
                           data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ?
                           eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2);
                       size_t current_alignment {0};
                       return static_cast<uint32_t>(calculator.calculate_serialized_size(
                                   *static_cast<TypeLookup_Reply*>(data), current_alignment)) +
                               4u /*encapsulation*/;
                   }
                   catch (eprosima::fastcdr::exception::Exception& /*exception*/)
                   {
                       return 0;
                   }
    #endif // FASTCDR_VERSION_MAJOR == 1
               };
    }

    void* TypeLookup_ReplyPubSubType::createData()
    {
        return reinterpret_cast<void*>(new TypeLookup_Reply());
    }

    void TypeLookup_ReplyPubSubType::deleteData(
            void* data)
    {
        delete(reinterpret_cast<TypeLookup_Reply*>(data));
    }

    bool TypeLookup_ReplyPubSubType::getKey(
            void* data,
            InstanceHandle_t* handle,
            bool force_md5)
    {
        if (!m_isGetKeyDefined)
        {
            return false;
        }

        TypeLookup_Reply* p_type = static_cast<TypeLookup_Reply*>(data);

        // Object that manages the raw buffer.
        eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast<char*>(m_keyBuffer),
                eprosima_fastdds_dds_builtin_TypeLookup_Reply_max_key_cdr_typesize);

        // Object that serializes the data.
        eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv1);
    #if FASTCDR_VERSION_MAJOR == 1
        p_type->serializeKey(ser);
    #else
        eprosima::fastcdr::serialize_key(ser, *p_type);
    #endif // FASTCDR_VERSION_MAJOR == 1
        if (force_md5 || eprosima_fastdds_dds_builtin_TypeLookup_Reply_max_key_cdr_typesize > 16)
        {
            m_md5.init();
    #if FASTCDR_VERSION_MAJOR == 1
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.getSerializedDataLength()));
    #else
            m_md5.update(m_keyBuffer, static_cast<unsigned int>(ser.get_serialized_data_length()));
    #endif // FASTCDR_VERSION_MAJOR == 1
            m_md5.finalize();
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_md5.digest[i];
            }
        }
        else
        {
            for (uint8_t i = 0; i < 16; ++i)
            {
                handle->value[i] = m_keyBuffer[i];
            }
        }
        return true;
    }

    void TypeLookup_ReplyPubSubType::register_type_object_representation()
    {
        EPROSIMA_LOG_WARNING(XTYPES_TYPE_REPRESENTATION,
            "TypeObject type representation support disabled in generated code");
    }

} // namespace builtin


} // namespace dds

} // namespace fastdds

} // namespace eprosima


// Include auxiliary functions like for serializing/deserializing.
#include "TypeLookupTypesCdrAux.ipp"
